/**
 * @author Aaron
 * @createTime 15:59 2022/5/16
 **/
package api_models

import (
	"time"
)

type Task struct {
	Id          int       `json:"id"`          //ID
	Type        uint8     `json:"type"`        //任务类型:0-日常任务,1-新手任务,2-限时任务 3-签到奖励
	Name        string    `json:"name"`        //任务名称
	Description string    `json:"description"` //任务描述
	Frequency   uint8     `json:"frequency"`   //任务次数
	Status      uint8     `json:"status"`      //是否启用,0-启用,1-不启用
	Weight      uint16    `json:"weight"`      //权重
	BeginTime   time.Time `json:"begin_time"`  //限时任务开始时间
	EndTime     time.Time `json:"end_time"`    //限时任务结束时间
	PageTag     uint8     `json:"page_tag"`    //任务跳转页面标识ID，0不跳转
}

type GetTaskListReq struct {
	PageParam
}

type GetTaskListResp struct {
	Id          int       `json:"id"`          //ID
	Type        uint8     `json:"type"`        //任务类型:0-日常任务,1-新手任务,2-限时任务
	Name        string    `json:"name"`        //任务名称
	Description string    `json:"description"` //任务描述
	Frequency   uint8     `json:"frequency"`   //完成任务所需条件次数
	Stage       uint8     `json:"stage"`       //完成进度
	IsReceived  uint8     `json:"is_received"` //奖励是否被领取,0-未领取,1-已领取,
	BeginTime   time.Time `json:"begin_time"`  //限时任务开始时间
	EndTime     time.Time `json:"end_time"`    //限时任务结束时间
	PageTag     uint8     `json:"page_tag"`    //任务跳转页面标识ID，0不跳转
	TaskReward
}

type GetTaskRewardList struct {
	TaskId int `json:"task_id"` //任务ID
	TaskRewardListById
}

type TaskStage struct {
	Stage     uint8 `json:"stage"`     //完成进度
	Frequency uint8 `json:"frequency"` //任务次数
}

type Gift struct {
	Id        uint16 `json:"id"`         //礼物ID
	Title     string `json:"title"`      //礼物名
	Icon      string `json:"icon"`       //礼物图标
	Quantity  uint32 `json:"quantity"`   //数目
	PriceType int    `json:"price_type"` //int(1) DEFAULT 0 COMMENT '1-鹰钻 2-克拉';
}

type TaskReward struct {
	Exp            uint32         `json:"exp"`              //奖励经验的数目
	Diamond        uint32         `json:"diamond"`          //奖励diamond克拉的数目
	Gold           uint32         `json:"gold"`             //奖励gold鹰钻的数目
	Gift           []*Gift        `json:"gift"`             //奖励的礼物
	Props          []*PropsReward `json:"props"`            //奖励道具
	NobleExpDay    uint32         `json:"noble_exp_day"`    //贵族卡
	LotteryFreeNum uint32         `json:"lottery_free_num"` //免费抽奖次数
}

type RewardByIds struct {
	TaskId int `json:"task_id"` //任务ID
	TaskReward
}

type TaskRewardListById struct {
	RewardType uint8 `json:"reward_type"`
	// 奖励类型:0-经验,1-gold鹰钻,2-diamond克拉,3-礼物
	// 4-贵族卡 5-道具 6-转盘抽奖次数
	GiftId    uint16 `json:"gift_id"`    //礼物ID,非礼物类型填充0
	PropsId   uint16 `json:"props_id"`   //道具id
	Icon      string `json:"icon"`       //礼物图标
	Title     string `json:"title"`      //礼物名称
	Quantity  uint32 `json:"quantity"`   //数目
	PriceType int    `json:"price_type"` //int(1) DEFAULT 0 COMMENT '1-鹰钻 2-克拉';
}

type TaskById struct {
	Id          uint      `json:"id"`
	Type        uint8     `json:"type"`        //任务类型:0-日常任务,1-新手任务,2-限时任务 3-签到任务
	Name        string    `json:"name"`        //任务名称
	Description string    `json:"description"` //任务描述
	Frequency   uint8     `json:"frequency"`   //任务次数
	BeginTime   time.Time `json:"begin_time"`  //限时任务开始时间
	EndTime     time.Time `json:"end_time"`    //限时任务结束时间
}

type GetRecordReq struct {
	PageParam
}

type GetRecordResp struct {
	Id          int    `json:"id"`          //ID
	Name        string `json:"name"`        //任务名称
	Description string `json:"description"` //任务描述
	CreateTime  int64  `json:"create_time"` //完成任务时间
	TaskReward
}

type TaskEvent struct {
	TaskId     int       `json:"task_id"`     //任务名
	Uid        int       `json:"uid"`         //用户名
	CreateTime time.Time `json:"create_time"` //任务发生的时间
	Count      int       `json:"count"`       //发生的数量，比如有一个任务是“消费100元”，那这次可能消费了10元
}
